﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Helena.Areas.Categorias.Models;
using Telerik.Web.Mvc;
using Helena.Areas.Productos.Models;
using System.Threading;
using Helena.Areas.Vendedores.Models;

namespace Helena.Areas.Categorias.Controllers
{
    public class CategoriaController : Controller
    {
        LogicaCategoria db = new LogicaCategoria();
        
        #region Comun

        public ActionResult Index()
        {
            VendedorView vw = (VendedorView)Session["Vendedor"];
            if (vw.ID != 0)
            {
                return View();
            }
            else
            {
                return Redirect("../Home/NoSession");
            }
        }

        [GridAction]
        public ActionResult Select()
        {
            return View("Index", new GridModel(db.i_RetornarCategorias()));
        }

        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult Insert()
        {

            CategoriaView c_v = new CategoriaView();
            if (TryUpdateModel(c_v))
            {
                db.i_AgregarCategoria(c_v);
            }
            return View("Index", new GridModel(db.i_RetornarCategorias()));
        }

        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult Delete(int? id)
        {
            int ID = id ?? -1;
            db.i_EliminarCategoria(ID);
            return View("Index", new GridModel(db.i_RetornarCategorias()));
        }

        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult Update(CategoriaView c)
        {
            db.i_ModificarCategoria(c);
            return View("Index", new GridModel(db.i_RetornarCategorias()));
        }
        #endregion

        #region Productos

        public ActionResult Productos(int ID_Categoria)
        {
            //ViewData["Campanas"] = db.context_publico.t_Campanas;
            ViewData["Categorias"] = db.context_publico.t_Categorias.Find(ID_Categoria);
            return View("ProductoCategoria", db.productos_x_categoria(ID_Categoria));
        }

        [GridAction]
        public ActionResult SelectProductos(int id_categoria)
        {
            int id = id_categoria;
            ViewData["CategoriaID"] = id;
            ViewData["Campanas"] = db.context_publico.t_Categorias.Find(id);
            return View("ProductoCategoria", new GridModel(db.productos_x_categoria(id)));
        }

        [GridAction]
        public ActionResult InsertProductos(int id_categoria, ProductoView producto)
        {
            int id = id_categoria;
            ViewData["CategoriaID"] = id;
            ViewData["Campanas"] = db.context_publico.t_Categorias.Find(id);
            db.agregarProductoACategoria(id, producto);
            return Json(new { msg = "ok" });
        }
        [GridAction]
        public ActionResult UpdateProductos(int id_categoria, ProductoView producto)
        {
            int id = id_categoria;
            ViewData["CategoriaID"] = id;
            ViewData["Campanas"] = db.context_publico.t_Categorias.Find(id);
            db.modificar_producto(id_categoria, producto);
            return View("ProductoCategoria", new GridModel(db.productos_x_categoria(id)));
        }
        [GridAction]
        public ActionResult DeleteProductos(int id_categoria, ProductoView producto)
        {
            int id = id_categoria;
            ViewData["CategoriaID"] = id;
            ViewData["Campanas"] = db.context_publico.t_Categorias.Find(id);

            db.eliminar_producto(id_categoria, producto);
            return View("ProductoCategoria", new GridModel(db.productos_x_categoria(id)));
        }

        public ActionResult ProductosRestantes(string producto, int id_Categoria)
        {
            int id = id_Categoria;
            Thread.Sleep(500);
            return Json(new SelectList(db.productosRestantes(producto, id), "ID", "Descripcion"));
        }
        public ActionResult DetallesProductoProveedor(int id_product)
        {
            return PartialView(db.producto_categoria(id_product));
        }

        #endregion
    }
}
